import urllib.request
import urllib.error

from loguru import logger


def get_redirect_url_urllib(url, timeout=10):
    """
    使用urllib获取重定向地址

    Args:
        url (str): 目标URL
        timeout (int): 超时时间（秒）

    Returns:
        str: 重定向地址
    """
    try:
        # 创建请求对象
        request = urllib.request.Request(url)
        # 发送请求但不跟随重定向
        response = urllib.request.urlopen(request, timeout=timeout)
        return response.geturl()
    except urllib.error.HTTPError as e:
        # 对于重定向状态码，获取重定向地址
        if e.code in [301, 302, 303, 307, 308]:
            return e.headers.get('Location', url)
        else:
            logger.error(f"HTTP错误: {e.code}")
            return None
    except Exception as e:
        logger.error(f"请求出错: {e}")
        return None
